package request

// MenuListRequest 菜单列表请求参数
type MenuListRequest struct {
	Status int    `json:"status" form:"status"` // 菜单状态(1:正常 0:禁用)
	Title  string `json:"title" form:"title"`   // 菜单名称
	Path   string `json:"path" form:"path"`     // 菜单路径
	Page   int    `json:"page" form:"page" `    // 页码
	Size   int    `json:"size" form:"size" `    // 每页数量
}

// MenuCreateRequest 创建菜单请求参数
type MenuCreateRequest struct {
	ParentID  uint   `json:"parent_id" binding:"required"` // 父菜单ID
	Name      string `json:"name" binding:"required"`      // 路由名称
	Path      string `json:"path" binding:"required"`      // 路由路径
	Component string `json:"component" binding:"required"` // 组件路径
	Redirect  string `json:"redirect"`                     // 重定向地址
	Title     string `json:"title" binding:"required"`     // 菜单标题
	Icon      string `json:"icon"`                         // 菜单图标
	Sort      int    `json:"sort"`                         // 排序
	Hidden    bool   `json:"hidden"`                       // 是否隐藏
	KeepAlive bool   `json:"keep_alive"`                   // 是否缓存
	IsFrame   bool   `json:"is_frame"`                     // 是否外链
	Status    int    `json:"status" binding:"required"`    // 菜单状态
}

// MenuUpdateRequest 更新菜单请求参数
type MenuUpdateRequest struct {
	ID        uint   `json:"id" binding:"required"`        // 菜单ID
	ParentID  uint   `json:"parent_id" binding:"required"` // 父菜单ID
	Name      string `json:"name" binding:"required"`      // 路由名称
	Path      string `json:"path" binding:"required"`      // 路由路径
	Component string `json:"component" binding:"required"` // 组件路径
	Redirect  string `json:"redirect"`                     // 重定向地址
	Title     string `json:"title" binding:"required"`     // 菜单标题
	Icon      string `json:"icon"`                         // 菜单图标
	Sort      int    `json:"sort"`                         // 排序
	Hidden    bool   `json:"hidden"`                       // 是否隐藏
	KeepAlive bool   `json:"keep_alive"`                   // 是否缓存
	IsFrame   bool   `json:"is_frame"`                     // 是否外链
	Status    int    `json:"status" binding:"required"`    // 菜单状态
}

// UserMenusRequest 获取用户菜单请求参数
type UserMenusRequest struct {
	UserID uint `json:"user_id" form:"user_id"` // 用户ID，为空时获取当前用户的菜单
}
